# 1.完成以下操作
# ① 导入题目中需要的库
import tensorflow as tf
from matplotlib import pyplot as plt
from keras.datasets.fashion_mnist import load_data
from keras.preprocessing.image import ImageDataGenerator

# ② 导入ImageDataGenerator，用于图像数据增强
# ③ 加载fashion_mnist数据集，并分为训练集和测试集
(x_train, y_train), (x_test, y_test) = load_data()
# ④   将训练集和测试集的图像数据从(样本数, 28, 28)的形状重塑为(样本数, 28, 28, 1)，以适应模型输入的要求，并对模型进行归一化转为浮点数
x_train = x_train.reshape(-1, 28, 28, 1) / 255
x_test = x_test.reshape(-1, 28, 28, 1) / 255
# ⑤ 创建一个ImageDataGenerator实例，配置各种数据增强参数

# ⑥ 随机旋转的角度，在宽度上随机移动的比例，在高度上随机移动的比例，随机应用剪切变换的角度范围，随机缩放的范围，水平翻转，垂直翻转
image_data_generator = ImageDataGenerator(
    rotation_range=30,
    width_shift_range=0.3,
    height_shift_range=0.3,
    shear_range=30,
    zoom_range=0.3,
    horizontal_flip=True,
    vertical_flip=True
)

# ⑦  选择一个图像索引，用于后续展示原始图像和增强后的图像
index = 10
# ⑧  索引从训练集中获取一个原始图像
original_image = x_train[index]

# ⑨   使用ImageDataGenerator的flow方法创建一个生成器，并从中获取一个增强后的图像
augmented_image = image_data_generator.flow(x_train, shuffle=False).next()
# ⑩ 使用matplotlib绘制原始图像和增强后的图像进行对比
plt.subplot(1, 2, 1)
plt.imshow(original_image)
plt.subplot(1, 2, 2)
plt.imshow(augmented_image[index])
plt.show()
